Сделать приказ построить это здание как способность, которая наводится на юнитов.
Ну и когда применили её - например создавать невидимого строителя и приказывать строить на нём.
Старый юнит можно убрать, или делать ему карту путей нулевую, чтобы не мешал строить.
Если охото сделать зарыды со счетчиком то тут 2 пути:
Юзать стандартные абилки со счетчиком зарядов, а их только 2 совы охотницы и вспышки орудийного расчета гномов. Увы первая цель декор онли, вторая цель точка онли, на юнита никак, кстати хорошо подходит под кастом блинки, кастуется почти мгновенно, быстрее канала, без всяких рукомаханий.
Использовать N способностей с разными иконками, на которых будет изображен счетчик, изменяя уровень способности или вовсе весть скилл через 'Eneg' (Техника, скилл механика, позволяет изменять поля скиллов) то можно создать скиллы со счетчиком, допустим пока есть заряды у скилла нету кулдауна, скилл последнего заряда имеет кулдаун.
Увы туча ипорта да и найти качественные иконки со счетчиком дело непростое.
Для начала читаем правила
Затем, новичок самостоятельно сделать эти способности не сможет, если речь идёт о мультиплеере и оптимизированном исполнении.
И тебе лучше обратиться сюда:
Diazon, все дамики должны быть приатачены к зданию через структуры/хэш/массивы
при смерти просто грузим эти дамики по юниту и удаляем их
лично я бы делал структуру и цеплял её по индексу согласно хэндлу юнита
но так как ты не знаешь таких слов то юзай хэш-таблицы
Блин, так я пытался раньше сделать через ульту тинкера - превращение в робота или что-то такое. Но суть в том, что способность, которая должна быть у оригинала, остаётся у нового, а старая не добавляется. Делая через триггер добавление способности - она не считается как старая, то есть возможно прокачать её за скилл-поинты.
Ну и когда морф обратно, новая способность удаляется, старая - не добавляется. Через триггеры я пытался делать, но это ооочень сильно глючит и надо очень долго править. Собственно поэтому я и пришёл к мгновенной замене героя на другого, триггерно добавляя нужные способности. т.к у нового героя другие базовые способности, то и получается все без багов. Кроме, собственного, указанного в вопросе.
Более того, пытался делать через пустышку - но не смог сделать отсутствие иконки, а это все портит.
Проблема решена - нашел вопрос со скрытие иконки и ответ на него
Ответ. Кроме вычислительного предела есть еще лимит создания новых потоков. Оба вида загруженности вызывают характерное падение мощности. Но попытка оценить работу с помощью только одного критерия будет заведомо ошибочной.
Событие:
Generic unit Умирает
Условие:
(Dying unit) не равно Здание
Level of ability [Пассивка] of (Killing unit) больше 0
Действие:
Игрок - Add gold (тут следовало бы поставить формулу, что количество золота умножается на уровень пассивки или как-то так)
Steal nerves:
Мне не нужно сохранять героя, в этом то и проблема, так бы я просто скопировал чужую наработку.
Все, мне помог один очень хороший человек.
Ну что пацаны Datamanager ?
Дам подсказку, смотреть на систему ливов и сыгранный игр, там переменная сама инкрементируется за каждый запуск игры, и сама подгружается, но надо включить локальные файлы и сделать привязку к нику и зашифровать данные, ибо иначе тут всё в открытом виде, можно сбрасывать значение
в чем редактор вкв3 отличается от редактора ск2 - к сожалению, в вк3-шном эдиторе не удастся отловить все данные.
если ты скажешь, что конкретно делает твой спелл, тебе могут подсказать более легкий вариант исполнения
насчет спецэффектов - утечка решается просто
создаешь точку, если спец на земле. если спец на юните, точка не требуется.
собсно воспроизводишь спец
и сразу его удаляешь. спец удалится тогда, когда доиграет до конца его анимация
кастом скриптом удаляешь точку, если 1 часть 1 пункта актуальна
Потому что несуществующая модель и невидимая вроде по-разному обрабатываются.
одинаково
короче, нашел решение проблемы
проблема в том, что в варкрафте кое какие криворукие программисты забабахали офигенную логику освещения , из-за которых фильтры оверлея берут за основу освещение в точке x=0. y=0. z=0. карты, если там нет освещения значит фильтр думает что и он тоже должен без освещения, решение данной проблемы является расположение модели с источником освещения по координатам в точном центре карты (включая z) и виженом для игрока в данной точке
оригинал темы с решением проблемы, а так же тест карта с моделью освещения по ссылке
Эмм как насчет глобальных переменных, т.к в фильтрах ты не создаешь условия а только делаешь проверки, без разрыва потока вейтами, то глобалки доступное и изящное решение.
quq_CCCP, пробовал, но что-то не получилось. вставил войска вокруг рудника, и рабы не могли войти в внутрь. Но это не из-за этого.
Все выяснил в чем дело.
нашел ответ
Сначала не понимал, почему вообще не хотело работать это. Везде тыкал, и проверял функцией, и дебагом выводил на экран. Абсолютно везде говорило, что можно передвигаться работникам (даже в воде).
Теперь врубился, почему так было. Нужно было создать блокиратор пути с PATHING_TYPE_PEONHARVESTPATHING. Было два варианта. Либо нарисовать "текстурку + декор" или через "триггеры". Хотя нарисовать текстуру в фотошопе как в статье xgm.guru/p/wc3/pathing-alternate мог, но не знал какого цвета, в статье не показано какого цвета тип PATHING_TYPE_PEONHARVESTPATHING. Или через триггеры см. карту xgm.guru/p/wc3/181384
Хотя создать блокиратор это было полбеды, нужно было понять почему не работает. Работники бегают по участку, то не бегают. Фиг поймешь. Этого можно было бы не заметить (в своей карте пришлось участок визуально рельефом приукрасить, чтобы мог отличать), чтобы понаблюдать. Потом заметил, что вурдалак неся срубленные деревья домой, начал обходить.
Работники когда идут добывать ресурсы, блокиратор их впускает (бывает и не хочет впускать). Но как только они добудут ресурсы, то получат приказ "resumeharvesting" и побегут домой. Тогда встречают в блок. И придется обходить участок. Правильно делают вурдалаки, хотя не всегда. А вот рабы орков и Альянса не правильные какие-то. Они встанут у границы, постоят 2-5 секунд. И походят у границы (туда-сюда), и находят как-будто бы "невидимую" щель, и все по одному входят.
Хотя это работает немного криво (у меня). Работники не хотят обходить участок, это раз. Во-вторых, работников могут впустить. то могут выпустить. Не понятно, что такое.
Насчет светлячков, их даже рассматривать не стал, так как добывают на одном месте.
Может, все дело в переменных? Попробуй в настройках поставить галочку копировать переменные вместе с триггерами или, если не сработает для твоего глючного редактора, попробуй скопировать переменные вручную перед триггерами.
Для аттачей необходимо использовать способность Tree of Life upgrade ability (Atol), видна только в JNGP, но при помощи некоторых манипуляций можно и в Reforged увидеть.
Альтернатив не так много, о них уже сказал Extremator.
Для этого берутся либо ауры (тогда в них ещё можно и специфический бафф накладывать на носителя), либо абилки от "когтей атаки" и "кольца защиты" (дающие +атаки и +защиту, в них точно так же как в ауре настраиваются точки крепления и модели)
Использовать способность Shpere (Asph) или аналоги у духов возмездия не рекомендуются.
PyCCKuu_4eJl, а причем тут аура торнадо? Если стан это стан, особый флаг + приказ смотреть на источник стана.
Не пойму почему не молоток бурь а аура торнадо?
Кажеться я разобрался с крашем и десинком, хотя я так не до конца понял почему именно из-за этих двух вещей происходит такая фигня.
Краш при падении артефакта скорее всего связан с лидербордом где отображаются результаты розыгрыша. Каждую секунду у лидерборда меняется название мб краш как-то связан с этим. По крайней мере этим можно объяснить почему игроков крашило по очереди с некоторой периодичностью. Теперь убрав этот лидерборд и откатав 30+ игр никаких крашей при падении артефактов обнаружено не было. Но конечно хотелось бы понять как лидерборд мог вызвать такие странные краши. Мб конфликт с локальными мультибордами?) Хотя я хз.
Десинхрон в начале волны с 1-м боссом. Я просмотрел 6 реплеев с игр когда вылетали игроки и выяснил что каждый раз это происходило когда их атаковал танк на котором приезжает босс. Танк имеет способность москиты и Тип Атаки - мгновенный и Тип Урона - мили. Мб какое-то сочетания настроек атаки и москитов давало такой странный результат.
8gabriel8, Ландшафт собственно не пострадал, просто размеры карт кардинально не совпадают и мне самому проще как-то не по человечески копировать ландшафт и декор, так что вот такие пироги RiderOfBalance, Ок, я нашёл открытый дрп и скопировал от туда триггеры и заменил. Та открытая дрп работает, на своём я ещё не пробовал, но надеюсь что всё будет работать. RiderOfBalance, я поставил триггеры с открытой соты, всё ещё не работает, так же я попробовал вообще удалить триггеры и так же всё ещё не работало. Следовательно, скорее всего триггеры тут не причём...
war3map.j:1: parse error
war3map.j:1: Statement outside of function
war3map.j:1: Statement outside of function
war3map.j:1: Statement outside of function
war3map.j:2: Statement outside of function
war3map.j:2: Statement outside of function
war3map.j:3: Statement outside of function
war3map.j:3: Statement outside of function
war3map.j:3: Statement outside of function
war3map.j:4: Statement outside of function
war3map.j:4: Statement outside of function
war3map.j:7: Undeclared variable cj_tmpgr_copy_nw509ert7
war3map.j:9: parse error
war3map.j:9: Statement outside of function
Ниже скриншот с начало .j кода.
Это лишь малая часть проблем, так же в коде есть переменные, чьи имена начинаются с цифр (что недопустимо во всех языках программирования, если мне не изменяет память).
Собственно потому, в .j миллиард ошибок, можешь приложить оригинал карты? Потому что версию, что ты загрузил имеет просто умертвлённый скрипт.
Просто это одна из способностей, у которой такая фигня получается. У тебя в поле заклинания должно быть два значения. Производная от печати преисподней и от Печати преисподней (слуга)
необязательно делать два триггера, можно сделать 1 с этим событием с условием (Владелец (Переключающий юнит)) равно Нейтрально-враждебный а остальные условия поместить в отдельный if/then/else multiple conditions, хз как называется этот пункт в русском редакторе, но он где-то в первых 15 строчках.
Хотя знаешь мне лень писать, вот так можно сделать в твоём случае
Если ты хочешь посылать куда-то юниты, то лучше давай их другому игроку, не нейтрально-враждебному
В русских триггерах переключающий юнит (в англ. триггерах triggering unit) - это юнит, на которого ссылается триггер. Эти все переменные зависят от событии. Вот в событий - юнит умирает, две переменные - это умирающий юнит (Dying unit), и убийца (Kiling unit). Конкретно триггер ссылается на умирающего юнита, то есть здесь
умирающий юнит = переключающий
Есть много похожих событий, где встречается переключающий.
Например, в событий "юнит применяет способность" выделяются две переменные "кастер" (англ. Casting unit) и "юнит-цель" (Target unit of ability being cast). Конкретно триггер ссылается на кастера.
кастер = переключающий
или например в событий юнит - получил приказ
выделяется переменная "юнит-получил приказ" (ordered unit) и цель (если есть, а то есть приказы без цели)
юнит, получивший приказ = переключающий
часто удобно еще владельца переключающего юнита находить
обычно пишут владелец переключающего юнита, а надо бы trigger player (переключающий игрок)
как называется юнит который начал строительство?
я хочу убить юнита который начал строительство
в событии - юнит начинает строительство
есть переменная : строящее здание (Consrtucting structure)
в событии - юнит завершает строительство
переменная завершенная постройка (Consrtuctied structure).
Конкретно события ссылаются на строящее здание, то есть переключающий юнит = здание. А вот строителя нельзя найти.
и мне нужно чтобы здание, строительство которого было начало мгновенно построилось!
но когда я ставлю триггерно
Боевая единица- Определить [Сооружает структуру] процесс строительства [100%]
у меня действительно ставиться полоса строительства как 100% но само строительство не заканчивается. :(
получается стоит стройка здания которое построилось на 100%
Ты про ту функцию
native UnitSetConstructionProgress takes unit whichUnit, integer constructionPercentage returns nothing
Боевая единица - Set Building Construction Progress
чего-то тоже у меня не работает эта функция совсем, может не правильно юзаю, на форуме мало что нашел.
чего-то тоже у меня не работает эта функция совсем, может не правильно юзаю, на форуме мало что нашел.
Короче заработало.
Если рабочий будет строить, а ты в это время воспользуешься этой функции по "событию - юнит начинает строительство" ничего не сработает. Странно как-то. Нужно добавлять 100% после некоторого времени. Спустя 0,01 секунду.
Убрать рабочего после того как в начале возведет фундамент, так да, полоска в 100% то останется =(( Полоска убирается, если рабочий придет и достроит (хотя уже достраивать нечего =( , полное хп )
У рабочего есть способность "ремонтировать". Там надо смотреть.
Советую так:
Юнит - начинает строительство
действие - ждать 0,01 секунд
действие - Боевая единица- Определить [Сооружает структуру] процесс строительства [100%]
следующий момент
юнит - завершает строительство
действие - удалить или убить строителя
Кстати в событий "юнит завершает строительство" и "юнит завершает строительство" нет ссылки на строителя. Только на построенное только что здание. Но эта проблема решаема. Нужно отслеживать приказ строителя, только на форуме одному делал наработку найти не могу, не пойму как делал
как отследить строителя, это делается по приказу
851994 (buildmenu): Приказ (без указания цели), открывающий меню строительства воина, способного возводить здания.
событие - юнит отдал приказ без цели
условие - целочисленное (id приказ) = 851994
приказ 851994 почему-то не отслеживается, он лишь позволяет открыть меню строительства. не катит. пробую тогда потом другое выбираем постройку в меню строительства, и строитель бежит строить.
событие - юнит отдал приказ цель
условие - классификация цели = здание или дерево
казалось бы все так, но недостаток в том, что он может за это время, пока бежит к точке строительства, передумать по желанию игрока. Поэтому надо смотреть, заранее там кучу событий и условии, короче проверок что если там пойдет не так
событие - юнит отдал приказ цель
условие - приказ = repair
можно использовать приказ repair. Короче от способности "ремонтировать" При строительстве и ремонте у орков и людей есть такая фишка. А вот у эльфов нет. Недостаток конечно. И еще рабочий может пойти ремонтировать здание, однако тут срабатывает приказ "smart", который равнозначен "repair". Когда строит/ремонтирует работник можно выяснить текущий приказ. У работника в этот может приказ repair а у светлячка при строительстве id здания, а при ремонте у светлячка id от "обновление".
Для начала создаешь способность вампиризма, например с 4 уровнями.
1 уровень - 25%
2 уровень - 50%
3 уровень - 75%
4 уровень - 100% вампиризма.
Если нынешнее здоровье героя деленное на максимальное здоровье этого же героя < 0,25 - делаем четвертый уровень способности.
Если нынешнее здоровье героя деленное на максимальное здоровье этого же героя < 0,50 - даем третий уровень способности
И т.д.
Каждый вопрос заслуживает отдельного обсуждения, а на все стало лень ответ печатать, когда начал.
Печатать реально долго, легче было реализовать примеры в карте:
Кроме последнего пункта, его нужно персонально рассматривать, так как игра не подразумевает использование для юнита двух списков. Например, можно наполнить список построек у юнита всеми зданиями, часть из которых блокировать при открытии одного списка и разблокировать при открытии второго, но это подходит, когда один рабочий. Можно сделать второй список из книги заклинаний, куда добавлены способности на основе игрушечных строений, чтобы было видно карту пути и всё такое, но там для них используется один приказ, то есть всегда одинаковое здание будет при нажатии на любую способность, а ещё нет стоимости золота и дерева, что тоже придётся как-то ваять триггерно. Можно перевоплощать юнита при смене списка в другого, но там тоже сложности, не помню точно какие, вроде бы связаны с расой, так как все строят по-разному.
С точкой сбора всё просто. Способность у игрока не заблокировать, потому нужно забрать её у всех зданий, которые есть на карте, либо будут построены.
Группа из максимум 9 юнитов работает немножко коряво, ранее мы с PT153 находили какой-то вариант, чтобы работало быстро, но лень пользоваться поиском. Вроде каждую 0.01 секунду проверялось количество выбранных юнитов, лишние удалялись из выбора.
Чтобы не было очереди, пришёл в голову лишь вариант с апгрейдом здания. Но у меня реализован просто пример для одного конкретного здания, а для нескольких абстрактных зданий нужно делать текстовым триггером, который будет для каждого здания запускать локальный таймер на нужное время и добавлять анимационный текстаг work. По отмене апгрейда, либо истечению таймера анимационный тег удаляется и создаётся воин, к которому привязывается соответствующий звук. Но есть и другие варианты, типа создавать внутри здания другое, которое реально будет производить юнитов, когда заказал апгрейд, там иная реализация. И не упомянул про затрачиваемые ресурсы. Потребуется забирать/возвращать часть ресурсов при отмене апгрейда.
На примере триггеров и фиолетовых строк в редакторе объектов смотри, как сделано улучшение Бугая в Дренорского бугая.
Конечно, мог бы сделать MUI триггер на GUI для отсутствия очереди, но это было бы громоздко и в техническом смысле уродливо. производящие здания заносились бы в массив, для которого будет массив таймеров, которые будут заноситься в виде событий на истечение таймера в другой триггер, а точнее будет несколько массивов таймеров, по максимальному числу тренируемых юнитов в любом производящем здании.
Только нанимать тех же актёров озвучки. У случае с другими людьми или голосовыми движками в лучшем случае удастся сделать что-то похожее, но всё равно будет понятно, что это имитация. Конкретики в вопросе мало, но подобную задачу решал новым голосом с длительным и подробным описанием для актёра его персонажа, чтобы он выдал приемлемую интонацию.
Причина: причин было много, а я искал лишь одну
Самыми распространёнными оказались элементарные ошибки в коде, отсутствие параметров, параметры не того типа данных (привет динамическая типизация) или лишние параметры, из за чего происходили "рандомные рассинхроны при обрыве потока"
Огромное спасибо пользователю prog, что откликнулся и смог найти ошибки, а нашёл он их при помощи языкового сервера sumneko lua для VScode
Эх, друг) ну я реализовал так. Есть в способностях замечательный закл перевоплащение иллидана. В нейтрально - враждебных. То есть ты создаешь двух героев у одного рэнжа 600 у другова 100 например, а этот спел меняет твоих героев местами(каждому там уже свои спец эффекты делаешь). Там есть еще у меха спел есть похожий, там без ограничения по времени, ну думаю идею ты понял.
На 126 патче на мемхаке вот можно покупать модификаторы типа атаки, алгоритм для оружия будет тот же самый
На 131 патче функции смены типа атаки есть, но не работают (пока что =))
Морф не костыль, если делаете кампанию и там атаку может менять глав герой, тогда надо будет сделать Х (7) копий героя с новым типом атаки, а если у вас 100 героев и надо всем менять тогда раздувать до 700, это ужасно
Wurst позволит динамически заполнить базу таких героев, но это сложно
» WarCraft 3 / Строительство нежити
» WarCraft 3 / Как стакается способность?
» WarCraft 3 / Как сделать подобную вещь?
» WarCraft 3 / Редактор Reforged
» WarCraft 3 / Лимит героев и героя
» WarCraft 3 / Масштабирование эффекта
» WarCraft 3 / Подскажите как сделать способность.
» WarCraft 3 / Анимации Атаки
» WarCraft 3 / Как узнать иконку юнита
» WarCraft 3 / Нужна Save\load система
» WarCraft 3 / Видимость спецэффекта
» WarCraft 3 / Фильтры
» WarCraft 3 / Рельеф / Вода / Склон с водой
» WarCraft 3 / Постоянно вылетает карта
» WarCraft 3 / Анимации
» WarCraft 3 / Нужна помощь в обучении
» WarCraft 3 / Проверка золота игрока.
» WarCraft 3 / Ошибка краша игры.
» WarCraft 3 / Описание заклинания/эффекта
» WarCraft 3 / Помогите с триггером
» WarCraft 3 / Описание
» WarCraft 3 / Разработка
» WarCraft 3 / Группа - юниты игрока вызывает утечку
» WarCraft 3 / Ошибка при начале игры
» WarCraft 3 / Как сменить тип атаки